package com.usvisatrack.core.dao.model;

import java.util.Date;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;

import com.usvisatrack.core.common.DataObject;
import com.usvisatrack.core.dao.model.data.VisaEntry;
import com.usvisatrack.core.dao.model.data.VisaStatus;

/**
 * Visa ORM
 * 
 * @author YuCheng Hu
 *
 */
public class Visa extends DataObject {

	private User user;
	private USEmbassy usEmbassy;
	private VisaClass visaClass;
	private String ds160Code;
	private VisaEntry visaEntry;
	private VisaStatus visaStatus;
	private String major;
	private String description;
	private Date dateVisaInterview;
	private Date dateVisaIssued;
	private Date dateVisaCheckCompleted;
	
	private Set<VisaStatusLog> visaStatusLogSet = new LinkedHashSet<VisaStatusLog>();
	


	public Visa() {
		Date date = new Date();
		super.setCreateDate(date);
		super.setModifyDate(date);
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String getDs160Code() {
		return ds160Code;
	}

	public void setDs160Code(String ds160Code) {
		this.ds160Code = ds160Code;
	}

	public USEmbassy getUsEmbassy() {
		return usEmbassy;
	}

	public void setUsEmbassy(USEmbassy usEmbassy) {
		this.usEmbassy = usEmbassy;
	}

	public VisaClass getVisaClass() {
		return visaClass;
	}

	public void setVisaClass(VisaClass visaClass) {
		this.visaClass = visaClass;
	}

	public VisaEntry getVisaEntry() {
		return visaEntry;
	}

	public void setVisaEntry(VisaEntry visaEntry) {
		this.visaEntry = visaEntry;
	}

	public VisaStatus getVisaStatus() {
		return visaStatus;
	}

	public void setVisaStatus(VisaStatus visaStatus) {
		this.visaStatus = visaStatus;
	}

	public String getMajor() {
		return major;
	}

	public void setMajor(String major) {
		this.major = major;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public Date getDateVisaInterview() {
		return dateVisaInterview;
	}

	public void setDateVisaInterview(Date dateVisaInterview) {
		this.dateVisaInterview = dateVisaInterview;
	}

	public Date getDateVisaIssued() {
		return dateVisaIssued;
	}

	public void setDateVisaIssued(Date dateVisaIssued) {
		this.dateVisaIssued = dateVisaIssued;
	}

	public Date getDateVisaCheckCompleted() {
		return dateVisaCheckCompleted;
	}

	public void setDateVisaCheckCompleted(Date dateVisaCheckCompleted) {
		this.dateVisaCheckCompleted = dateVisaCheckCompleted;
	}

	public Set<VisaStatusLog> getVisaStatusLogSet() {
		return visaStatusLogSet;
	}

	public void setVisaStatusLogSet(Set<VisaStatusLog> visaStatusLogSet) {
		this.visaStatusLogSet = visaStatusLogSet;
	}

}
